﻿/*
    Erstellen Sie bitte die Klassen Spellcaster, Sorcerer, Wizard, WildMagicSorcerer und IllusionWizard:
        Sorcerer und Wizard sind Spellcaster.
        WildMagicSorcerer ist ein Sorcerer und IllusionWizard ist ein Wizard.
    Alle Spellcaster verfügen über die Methode "CastSpell()"
        In Spellcaster gibt die Methode "Ich kann zaubern." aus.
    Sorcerer und Wizard überschreiben diese Methode.
        Sorcerer gibt "Ich kann zaubern." und "Meine Zauberkraft ist mir angeboren." aus.
        Wizard gibt "Ich kann zaubern." und "Für meine Zauberkraft musste ich hart arbeiten." aus.
    WildMagicSorcerer und IllusionWizard überschreiben und versiegeln(finalize) die Methode.
        WildMagicSorcerer gibt "Ich kann zaubern.", "Meine Zauberkraft ist mir angeboren." und "Meine Zauber sind unberechenbar." aus.
        IllusionWizard gibt "Ich kann zaubern.", "Für meine Zauberkraft musste ich hart arbeiten." und "Ich habe mich auf Illusionszauber spezialisiert." aus.

    Vermeiden Sie beim Überschreiben der Methode doppelten Code!

    In der Main erzeugen Sie einen wildMagicSorcerer und einen illusionWizard und rufen für beide die CastSpell()-Methode auf.

    Erstellen Sie dazu ein Klassendiagramm
*/

namespace Lösungen
{
    class Program
    {
        public static void Main(string[] args)
        {
            Spellcaster sorcerer = new WildMagicSorcerer();
            sorcerer.CastSpell();
            Spellcaster wizard = new IllusionWizard();
            wizard.CastSpell();

        }

    }
}